public T GetValue<T>(
DicomElement element,
T defaultValue,
GetValueDelegate getValueDelegate
)
public:
T^ GetValuegeneric<typename T>
(
DicomElement^ element,
T^ defaultValue,
GetValueDelegate^ getValueDelegate
)
element
an item in the data set
defaultValue
a value of type T that is returned if the actual value cannot be retrieved.
getValueDelegate
an optional delegate that converts that extracted data to any type
T
specifies the type of the value to return
a value of type T that is the value of the DICOM element
For information on this method, see GetValue.
using Leadtools;
using Leadtools.Dicom;
///
public class PersonName
{
private string[] _innerArray = new string[5] {string.Empty, string.Empty, string.Empty, string.Empty,
string.Empty };
/// Access this person name instance as array. Index range is
/// bounded between 0 (family name) and 4 (name suffix).
public string this[int index]
{
set
{
if (value == null || value.Length < 64)
_innerArray[index] = value;
else
throw new DicomException("Length of new entry exceeds 64 characters.");
}
get { return _innerArray[index]; }
}
private const int _familyNameIndex = 0;
private const int _givenNameIndex = 1;
private const int _middleNameIndex = 2;
private const int _namePrefixIndex = 3;
private const int _nameSuffixIndex = 4;
/// Access person name part family name.
public string FamilyName
{
set
{
if (value == null || value.Length < 64)
{
_fullName = null;
_innerArray[_familyNameIndex] = value;
}
else
throw new DicomException("Length of family name exceeds 64 characters.");
}
get { return _innerArray[_familyNameIndex]; }
}
/// Access person name part given name.
public string GivenName
{
set
{
if (value == null || value.Length < 64)
{
_fullName = string.Empty;
_innerArray[_givenNameIndex] = value;
}
else
throw new DicomException("Length of family name exceeds 64 characters.");
}
get { return _innerArray[_givenNameIndex]; }
}
/// Access person name part middle name.
public string MiddleName
{
set
{
if (value == null || value.Length < 64)
{
_fullName = string.Empty;
_innerArray[_middleNameIndex] = value;
}
else
throw new DicomException("Length of family name exceeds 64 characters.");
}
get { return _innerArray[_middleNameIndex]; }
}
/// Access person name part name prefix.
public string NamePrefix
{
set
{
if (value == null || value.Length < 64)
{
_fullName = string.Empty;
_innerArray[_namePrefixIndex] = value;
}
else
throw new DicomException("Length of family name exceeds 64 characters.");
}
get { return _innerArray[_namePrefixIndex]; }
}
/// Access person name part name suffix.
public string NameSuffix
{
set
{
if (value == null || value.Length < 64)
{
_fullName = string.Empty;
_innerArray[_nameSuffixIndex] = value;
}
else
throw new DicomException("Length of family name exceeds 64 characters.");
}
get { return _innerArray[_nameSuffixIndex]; }
}
private string _fullName = string.Empty;
/// Access full person name string representation. According
/// to the DICOM standard "^" is used as separator of different
/// person name parts.
public string FullName
{
set
{
_fullName = value;
if (_fullName != null)
{
string[] s;
int i;
if (_fullName.Contains("^"))
s = _fullName.Split('^');
else
s = _fullName.Split(' ');
for (i = 0; i < s.Length; i++)
{
if (s[i].Length < 64)
{
if (i < _innerArray.Length)
_innerArray[i] = s[i];
}
else
throw new DicomException("Length of family name exceeds 64 characters.");
}
for (int k = i; k < _innerArray.Length; k++)
_innerArray[k] = string.Empty;
}
}
get
{
if (_fullName == string.Empty)
{
_fullName = _innerArray[0];
bool isNotNull = _fullName != string.Empty;
int i = 1;
while (isNotNull && i < _innerArray.Length)
{
isNotNull = _innerArray[i] != string.Empty;
if (isNotNull)
_fullName += "^" + _innerArray[i];
i++;
}
}
return _fullName;
}
}
/// Creates a new empty person name instance.
public PersonName() { }
/// Creates a new person name instance from specified full name.
/// All person name parts have to be separated by "^" according to
/// the DICOM standard.
public PersonName(string fullName)
{
FullName = fullName;
}
/// Creates a new person name instance from the different person name parts.
public PersonName(string familyName, string givenName,
string middleName, string namePrefix, string nameSuffix)
{
FamilyName = familyName;
GivenName = givenName;
MiddleName = middleName;
NamePrefix = namePrefix;
NameSuffix = nameSuffix;
}
/// Return this person name instance's.
public override string ToString()
{
return FullName;
}
}
void DumpPersonName(PersonName pn)
{
String sMsg =
string.Format("Family Name: {0}\nGiven Name: {1}\nMiddle Name: {2}\nName Prefix: {3}\nName Suffix: {4}",
pn.FamilyName,
pn.GivenName,
pn.MiddleName,
pn.NamePrefix,
pn.NameSuffix);
Console.WriteLine(sMsg);
}
private void DicomDataSet_GetValueWithDelegateExample()
{
// Create a DicomDataSet and add a PatientName
// Dicom Spec for Value Representation PN (Person Name)
// Elements are in this order:
// * family name complex
// * given name complex
// * middle name
// * name prefix
// * name suffix.
DicomDataSet ds = new DicomDataSet();
ds.InsertElementAndSetValue(DicomTag.PatientName, "Smith^John^MiddleName^Mr.^III");
// Get a PersonName value of an element by specifying a tag, and using a delegate
// Use this form when the type is not native to the dataset
// The data is extracted from the field as a string and passed to the provided method.
PersonName pn = null;
pn = ds.GetValue<PersonName>(
DicomTag.PatientName,
null,
delegate (string data)
{
PersonName t = new PersonName(data);
return t;
}
);
DumpPersonName(pn);
// Another overload, specifying parent element
pn = ds.GetValue<PersonName>(
null,
true,
DicomTag.PatientName,
null,
delegate (string data)
{
PersonName t = new PersonName(data);
return t;
}
);
DumpPersonName(pn);
// Another overload, this time passing in the DICOM element instead of a tag
DicomElement element = ds.FindFirstElement(null, DicomTag.PatientName, true);
pn = ds.GetValue<PersonName>(
element,
null,
delegate (string data)
{
PersonName t = new PersonName(data);
return t;
}
);
DumpPersonName(pn);
}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.